
/**
 * 模型基础类，必须继承才能使用
 */
class BaseModel {

  /**
   * 构造方法
   */
  constructor() {
    if (new.target === BaseModel) {
      throw new Error('本类不能实例化')
    }
    this._id = null
  }

  /**
   * 模型设置数据
   * @param json json数据
   */
  setDataWithJson(json) {
    for (let key in this) {
      if (json[key] !== undefined) {
        this[key] = json[key]
      }
    }
    // Object.assign(this, json)
  }

  /**
   * 数据转模型
   * @param json json数据
   * @returns {BaseModel}
   */
  static creatModelWithJson(json) {
    const model = new this()
    model.setDataWithJson(json)
    return model
  }

  /**
   * json数组转模型数组
   * @param dataArr json数组
   * @returns {[BaseModel]}
   */
  static getModelsWithArr(dataArr) {
    if (dataArr instanceof Array) {
      return dataArr.map((item) => {
        return this.creatModelWithJson(item)
      })
    } else {
      return []
    }
  }
}

export default BaseModel
